\chapter{工作总结与未来工作展望}
\label{cha:conclusion}
\section{工作总结}
本文提出了{\TITLE}的研究课题，立足于现代网络大规模、高带宽和传输需求多样性的趋势，提出了保障现代网络高可靠和高适应性的可验证路由编程体系。为了提高网络的可靠性和传输需求适应性，本研究将数据平面验证系统和网络协同应用编程系统结合，针对数据平面验证和网络协同应用编程的关键模块进行了深入研究，形成一套完整的可验证路由编程系统。首先，针对网络可靠性提出了面向大规模网络的数据平面验证系统Flash及数据平面快速验证方法CE2D。其次，针对网络的传输需求适应性提出了网络协同应用编程框架Socker和数据平面配置生成系统Fusion。本文的主要研究内容和贡献总结如下：

\begin{enumerate}
  \item 提出并实现了首个面向大规模网络的数据平面验证系统Flash。针对大规模网络验证中存在的“更新风暴”现象，Flash通过快速逆模型变换（FIMT）和并行流水线执行方法提高数据平面模型构建的吞吐量和伸缩性，从而有效应对“更新风暴”问题。同时，实现了首个面向大规模谓词操作的BDD库Nanobdd，解决了面向大规模数据平面验证中的BDD操作并发问题，并作为Flash的关键基础设施之一，进一步提高了Flash的性能。在真实网络拓扑如Facebook数据中心以及开源数据集上的实验表明，Flash的数据平面构建速度相比已有工作提高了近40,000倍。
  \item 提出并实现了首个能够在不完整数据平面模型上实现一致性快速验证方法CE2D。针对大规模网络验证中存在的“长尾到达”现象，Flash通过一致性提前验证（CE2D）方法构建一致性数据平面模型，并通过递减图查询方法在一致性数据平面模型上实现快速增量式验证，在开源数据集和真实OpenR路由实例上的实验表明，相比已有工作的图计算方法，CE2D的验证速度提高了1,163倍。
  \item 提出并实现了首个套接字层的网络协同应用编程框架Socker。针对网络协同应用编程中的“网络与应用割裂”现象，Socker从编程角度将网络控制和应用逻辑紧密结合，通过将网络控制和应用程序放置于同一进程上下文环境中，实现了完全用户定义的网络与应用协同过程。Socker通过套接字跟踪方法实现了不同数据流和网络路由的绑定，并提供了一套与传统套接字兼容的编程接口和编程模型，提出了声明式接口 NQL 和编程式接口实现网络协同应用的可验证路由编程过程。同时，Socker集成了基于ALTO和perfSONAR的网络可见性框架，实现了主动获取网络路径状态功能。实验结果表明，相比传统套接字编程，Socker实现了超过20\%的数据传输速度提升，并只有轻微的时间和内存开销。
  \item 实现了面向网络协同应用编程的数据平面配置生成系统Fusion。针对网络协同应用编程中的“路由冲突”现象，Fusion解决了Socker应用产生的网络路由需求对应的数据平面配置生成问题，通过将问题建模为可满足性问题和整数规划问题，实现了基于定长编码和基于前缀编码的数据平面配置生成方法。相比于传统分配唯一路径标签方法，Fusion生成的数据平面配置的匹配域长度最高可降低75\%。
\end{enumerate}

综上所述，本论文以当前网络逐渐向大规模、高带宽和应用多样化发展为背景，在网络可靠性和网络适应性方面分别进行了研究，首先提出面向大规模网络的数据平面验证系统保障网络可靠性，基于验证系统提供的可靠路由信息，通过网络协同应用编程框架实现网络的传输需求适应性。相信通过本论文的研究，可以为未来网络向高可靠和高适应性方向演进提供有效的借鉴和参考。

\section{未来工作展望}
尽管本文对网络验证和网络协同应用领域进行了相对深入的研究，但鉴于网络和应用的复杂性，仍然存在一些潜在的局限性。未来的研究可以朝以下方向展开，但不仅限于此。首先，在网络验证方面，未来工作主要包括并不限于以下研究：

\begin{enumerate}
  \item 统一的数据平面验证南向协议。数据平面验证要求获取网络设备的FIB信息，然而目前缺乏通用的标准和协议来实现这一数据的获取。不同网络设备和不同网络操作系统采用不同的获取方式，如命令行、SNMP、gRPC等。因此，未来的需要引入一种统一的数据平面验证南向协议，以确保数据平面验证系统能够适配不同类型的设备、路由软件和操作系统。
  \item 支持更丰富的数据平面配置类型。随着现代网络设备的演进，其数据平面配置类型变得更加丰富，如VRF和LAG等。然而，本文所采用的网络拓扑抽象模型未充分区分这些不同配置类型。举例来说，VRF需要对物理设备进行进一步细分，以形成多个独立的路由单元，而LAG则要将链路抽象为物理链路的集合。为使数据平面模型贴合实际网络拓扑，需对其进行必要的调整。
  \item 拓展路由规则类型的适配。数据平面中存在多种路由规则类型，包括NAT、包封装，甚至P4设备所采用的基于算法的规则动作等。为应对不同类型的路由规则，数据平面模型需要具备更强的表达能力。这能确保模型的灵活性，能够适应多样的路由规则类型。
  \item 网络错误自动修复。本研究主要致力于数据平面错误的检测，未来有望探索实现网络错误自动修复的方法。通过自动化的方式，系统可以在检测到错误时立即采取相应的修复措施，提高网络的可靠性。
  \item 硬件差异性对数据平面验证系统影响分析。并行流水线数据平面构建依赖于多核CPU能力，本文由于实验环境的限制未能在不同硬件配置下对数据平面验证系统效率进行实验。未来需要基于不同硬件平台测试Flash的性能差异，以更为明显地揭示并行流水线在多核CPU系统中的优越性，提供更有针对性的实践指导价值。
\end{enumerate}

其次，在网络协同应用编程方面，该领域目前尚处于开始研究阶段，也是当前网络研究的热点之一。未来工作主要包括并不限于以下研究：

\begin{enumerate}
  \item 扩展程序库的平台适配性。目前Socker主要构建在eBPF上，然而eBPF仅适用于较新的Linux操作系统。然而，现今的应用不仅限于Linux平台，许多应用也在Windows、Android以及iOS等平台上运行。在这些平台上，Socker的实现条件尚不具备。另一方面，eBPF的功能在配备有智能网卡（Smart NIC）的设备上可以进一步将Socket跟踪功能卸载在智能网卡上，可以进一步降低Socket的资源开销，同时能够实现平台和系统无关的数据包区分方法。因此，未来研究需要考虑如何适配不同操作系统和硬件平台，以扩展Socker的适配性和应用范围。
  \item 网络安全与隐私：尽管Socker的设计具备最高程度的灵活性，但也伴随着安全性和隐私暴露的风险。因此，必须对网络与应用之间的信息获取实施严格的权限控制。在网络协同应用中，如何保护用户数据、应用逻辑以及网络状态，以防范恶意攻击和数据泄漏，成为一个至关重要的研究方向。
  \item 跨应用协同优化。虽然不同应用对网络的需求有所不同，但它们之间常常存在相似甚至重叠的需求。例如，多个应用可能共享网络中的某些路径或具有相似的QoS要求。在这种情况下，可以进行跨应用的协同优化，类似于RSVP的网络资源分配、流量调度，以及终端设备的套接字缓存调度等。实现这种跨应用的协同优化将是网络协同应用编程领域未来亟需解决的重要问题之一。
  \item 提高数据平面配置生成的效率。虽然Fusion能够在定长和前缀模式下实现最优的数据平面配置，但在大规模网络和应用场景下仍可能遇到效率问题。由于Fusion具有NP完全的特性，需要进一步探索更高效的算法和执行模式，如启发式算法和分布式执行。这将有助于应对大规模网络和应用中可能出现的性能瓶颈，从而更好地满足实际应用需求。
\end{enumerate}
